package exception;

/**
 * java异常处理机制:try...catch
 * try{
 *     代码片段
 * }catch(xxxException e){
 *     当try的代码片段出现xxxException时的补救措施
 * }
 */
public class TryCatchDemo {
    public static void main(String[] args) {
        System.out.println(("程序开始了..."));
        try{
            //try语句中某句如果出现了异常，那么try块中这句代码以下的代码都不执行了
            //try语句中如果不出现异常，catch块不执行
            String line=null;
            System.out.println(line.length());//由JVM给new了个空指针异常出来
            //因为上一句发生了异常，所以下面的代码统统不执行了
            String line1="";
            System.out.println(line1.charAt(0));
            String line2="abc";
            System.out.println(Integer.parseInt(line2));
        } catch(NullPointerException e){
            System.out.println("出现了空指针异常并解决了");//针对try中出现空指针异常
        //若多个异常具有相同处理方式时，可以合并到一个catch中进行处理
        }catch (StringIndexOutOfBoundsException e){
            System.out.println("出现了字符串越界异常并解决了");//针对try中出现下标越界异常
        }catch (Exception e){//可以在最后捕获超类型异常，凡是该异常的子类型都可以被捕获并处理
            System.out.println("反正就是出了个错");
        }
        System.out.println("程序结束了...");
    }
}
